<?php
/**
 * 文件下载
 */

require_once 'config/config.php';
require_once 'includes/db.php';

// 检查是否已安装
if (!file_exists(__DIR__ . '/config/installed.lock')) {
    header('Location: install.php');
    exit;
}

$fileId = intval($_GET['id'] ?? 0);

if ($fileId <= 0) {
    die('无效的文件ID');
}

try {
    $db = new Database();
    $file = $db->fetchOne("SELECT * FROM files WHERE id = ?", [$fileId]);

    if (!$file) {
        die('文件不存在');
    }

    // 检查文件是否存在
    if (!file_exists($file['file_path'])) {
        die('文件已被删除或移动');
    }

    // 更新文件下载次数
    $db->query("UPDATE files SET download_count = download_count + 1 WHERE id = ?", [$fileId]);

    // 检查是否是价值链关联的文件，如果是，则增加价值链下载计数
    $valueChainContent = $db->getValueChainContent();
    if ($valueChainContent && $valueChainContent['file_id'] == $fileId) {
        $db->incrementValueChainDownload();
    }

    // 设置下载头
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="' . rawurlencode($file['original_name']) . '"');
    header('Content-Length: ' . filesize($file['file_path']));
    header('Cache-Control: no-cache, no-store, must-revalidate');
    header('Pragma: no-cache');
    header('Expires: 0');

    // 输出文件
    readfile($file['file_path']);
    exit;

} catch (Exception $e) {
    die('下载失败: ' . $e->getMessage());
}
